package cn.iocoder.yudao.module.trade.controller.admin.depositorder.vo;

import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Schema(description = "管理后台 - 押金信息分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class DepositOrderPageReqVO extends PageParam {

    private Long id;

    @Schema(description = "对外展示，用燃气户的自动生成code接口")
    private String code;

    @Schema(description = "燃气户id", example = "17855")
    private Long crmMemberUserId;

    @Schema(description = "部门id", example = "14743")
    private Long deptId;

    @Schema(description = "部门名", example = "李四")
    private String deptName;

    @Schema(description = "支付方式0微信1支付宝2银行卡")
    private Integer payment;

    @Schema(description = "经办人id,可选多个 逗号分割", example = "29342")
    private String operatorId;

    @Schema(description = "经办人名称", example = "29342")
    private String operatorName;

    @Schema(description = "总押金")
    private Integer depositAmount;

    @Schema(description = "租金价格", example = "8306")
    private Integer rentPrice;

    @Schema(description = "应收押金")
    private Integer toAmount;

    @Schema(description = "实收押金")
    private Integer inAmount;

    @Schema(description = "押金余额")
    private Integer balance;

    @Schema(description = "支付状态", example = "2")
    private Integer payStatus;

    @Schema(description = "状态", example = "2")
    private String status;

    @Schema(description = "来源")
    private Integer source;

    @Schema(description = "工单id", example = "25853")
    private Long wipId;

    @Schema(description = "工单编码")
    private String wipCode;

    @Schema(description = "起租时间")
    private LocalDateTime startTime;

    @Schema(description = "结束时间")
    private LocalDateTime endTime;

    @Schema(description = "单据id ", example = "3131")
    private Long billId;

    @Schema(description = "回执")
    private Integer receiptLabel;

    @Schema(description = "回执状态", example = "1")
    private Integer receiptStatus;

    @Schema(description = "回执时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime receiptTime;

    @Schema(description = "回执确认人", example = "李四")
    private String receiptName;

    @Schema(description = "创建时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime createTime;

    @Schema(description = "更新人")
    private String updater;
    @Schema(description = "商品名称")
    private String skuName;

    @Schema(description = "图片url逗号分割")
    private String imageLink;

    /**
     * 押金内容
     */
    @Schema(description = "押金内容")
    private String depositContent;
    @Schema(description = "备注")
    private String remark;

    @Schema(description = "押瓶规格")
    private List<String> modelCodes;
    @Schema(description = "押瓶单价")
    private List<BigDecimal> depositPrices;
    @Schema(description = "押金登记时间")
    private List<String> depositTimes;
    @Schema(description = "是否收取租金")
    private List<Integer> isRents;
    @Schema(description = "押瓶数量")
    private Integer deposiCount;

    //----- TODO 2024-1-10 押金页面需要展示 ---------
    @Schema(description = "户号")
    private String crmCode;
    @Schema(description = "燃气户姓名")
    private String crmName;
    @Schema(description = "燃气户联系电话")
    private String crmMobile;
    @Schema(description = "燃气户类型")
    private String crmType;
    @Schema(description = "燃气户身份证")
    private String crmCard;
    @Schema(description = "燃气户地址")
    private String crmAddress;

    private List<Long> crmIds;

    private List<Long> depositStatus;

    private List<String> statusList;

}